package 基础.线程_队列_线程池.通信;
//基于object中的wait方法,notify方法实现线程之间的通讯
//wait/notify/nofityall这些方法必须用在同步方法或同步代码块内部,由对象锁调用,用于实现线程之间的通讯
//wait方法:调用此方法的线程进入等待队列,并且会让出CPU,释放锁
//notify/notifyAll方法: 调用此方法的线程用于通知处于等待状态的线程,可以进入就绪态.
public class WaitNotifyTests {
    static String content;
    public static void main(String[] args) {
        new Thread(){
            @Override
            public void run() {
                synchronized (WaitNotifyTests.class){
                    content="jsdtn2302";
                    WaitNotifyTests.class.notifyAll();
                }
            }
        }.start();
        synchronized (WaitNotifyTests.class) {
            while (content == null)
                try{
                    WaitNotifyTests.class.wait();
                }catch (InterruptedException e){}
            System.out.println(content.toUpperCase());//NPE
        }

    }
}
